<?php
/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2018/4/22
 * Time: 14:43
 */

namespace app\admin\model;


use think\Exception;
use think\exception\PDOException;
use think\Model;

class Admin extends Model
{
    protected $name = 'admin';
    protected $autoWriteTimestamp = true;

    /**
     * 根据条件获取用户列表信息
     * @param $where
     * @param $offset
     * @param $limit
     * @return false|\PDOStatement|string|\think\Collection
     */
    public function getAdminByWhere($where, $offset, $limit){
        return $this->where($where)->limit($offset,$limit)->order('id desc')->select();
    }

    /**
     * 插入管理员信息
     * @param $param
     */
    public function insertAdmin($param) {
        try{
            $result = $this->validate('AdminValidate')->save($param);
            if ($result === false) {
                //验证失败输出错误信息
                return msg(-1,'',$this->getError());
            } else {
                return msg(1,url('Admin/index'), '添加管理员成功！');
            }
        }catch (\PDOException $e) {
            return msg(-2,'',$e->getMessage());
        }
    }
    public function checkName($name){
        try{
            $result = $this->where('user_name',$name)->find();
            if ($result) {
                //验证失败输出错误信息
                return msg(-1,'','该管理员名称已存在');
            }
        }catch (\PDOException $e) {
            return msg(-2,'',$e->getMessage());
        }
    }

    /**
     * 根据搜索条件获取所有的用户数量
     * @param $where
     * @return int|string
     */
    public function getAllAdmin($where){
        return $this->where($where)->count();
    }

    /**
     * 根据管理员id获取角色信息
     * @param $id
     */
    public function getOneAdmin($id){
        return $this->where('id', $id)->find();
    }

    /**
     * 编辑管理员信息
     * @param $param
     */
    public function editAdmin($param){
        try{
            $result = $this->validate('AdminValidate')->save($param,['id'=>$param['id']]);
            if (false === $result) {
                //验证失败，输出错误信息
                return msg(-1, '', $this->getError());
            } else {
                return msg(1, url('Admin/index'), '编辑管理员成功！');
            }
        }catch (\PDOException $e) {
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 删除管理员
     * @param $id
     */
    public function delAdmin($id)
    {
        try{

            $this->where('id', $id)->delete();
            return msg(1, '', '删除管理员成功');

        }catch( PDOException $e){
            return msg(-1, '', $e->getMessage());
        }
    }

    /**
     * 更新管理员状态
     * @param array $param
     */
    public function updateStatus($param = [], $adminId){
        try{
            $info = $this->where('id',$adminId)->find();
            $this->where('id', $adminId)->update($param);
            session('head', $info['head']);
            return msg(1, '', '更新成功！');
        }catch (Exception $e) {
            return msg(-1, '', $e->getMessage());
        }
    }

    /**
     * 根据管理员名字检测用户数据
     * @param $adminName
     */
    public function checkAdmin($adminName){
        return $this->where('user_name',$adminName)->find();
    }

    /**
     * 根据用户名获取管理员信息
     * @param $name
     */
    public function findUserByName($name)
    {
        return $this->where('user_name', $name)->find();
    }

    /**
     * 根据管理员id获取角色信息
     * @param $id
     */
    public function getOneUser($id)
    {
        return $this->where('id', $id)->find();
    }
}